Components and Generative Programming

نویسندگان

  • Krzysztof Czarnecki
  • Ulrich W. Eisenecker
چکیده

This paper is about a paradigm shift from the current practice of manually searching for and adapting components and their manual assembly to Generative Programming, which is the automatic selection and assembly of components on demand. First, we argue that the current 00 technology does not support reuse and configurability in an effective way. Then we show how a system family approach can aid in defining reusable components. Finally, we describe how automate the assembly of components based on configuration knowledge. We compare this paradigm shift to the introduction of interchangeable parts and automated assembly lines in the automobile industry. We also illustrate the steps necessary to develop a product line using a simple example of a car product line. We present the feature model of the product line, develop a layered architecture for it, and automate the assembly of the components using a generator. We also discuss some design issues, applicability of the approach, and future development. 1 From Handcrafting to an Automated Assembly Line This paper is about a paradigm shift from the current practice of manually searching for and adapting components and their manual assembly to Generative Programming, which is the automatic selection and assembly of components on demand. This paradigm shift takes two steps. First, we need to move our focus from engineering single systems to engineering families of systems-this will allow us to come up with the “right” implementation components. Second, we can automate the assembly of the implementation components using generators. Let us explain this idea using a metaphor: Suppose that you are buying a car and instead of getting a read-to-use car, you get all the parts necessary to assemble the car yourself. Actually, not quite. Some of the parts are not a one-hundred-percent fit and you have to do some cutting and filing to make them fit (i.e. adapt them). This is the current practice in component-based software engineering. Brad Cox compares this situation to the one at the brink of the industrial revolution, when it took 25 years of unsuccessful attempts, such as Ely Whitney’s pioneering effort, until John Hall finally succeeded to manufacture muskets from interchangeable parts in 1822 (see [Cox90, Wi1971). Then it took several decades before this groundbreaking idea of massmanufacturing from interchangeable parts spread to other sectors. Even if you use a library of designed-to-fit, elementary components (such as the C++ Standard Template Library [MS96]), you still have to assemble them manually and there is a lot of detail to care about. In other words, even if you don’t have to do the

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Generative Programming and Components:

This paper investigates on the possible advantages of applying generative programming in a component based development process: if a component oriented approach is applied, then generative programming can be used to automatically compose and assemble components. In part one of this paper, I present the application of Generative Programming from an engineering point of view, using a simple but c...

متن کامل

Lightweight and Generative Components II: Binary-level Components

Most software component technologies fail to account for lightweight components (those for which a function call is too ineecient or semantically inappropriate) or generative components (those in which the component embodies a method of constructing code rather than actual code). Macro-based systems such as the C++ Standard Template Library are exceptions. They, however, have the disadvantage t...

متن کامل

Generative Binary Components

Most software component technologies fail to account for lightweight components (those for which a function call is too ineecient or semantically inappropriate) or generative components (those in which the component embodies a method of constructing code rather than actual code). Macro-based systems such as the C++ Standard Template Library are exceptions. They, however, have the disadvantage t...

متن کامل

Common Metamodel of Component Diagram and Feature Diagram in Generative Programming

Corresponding Author: Matija Novak Faculty of Organization and Informatics, University of Zagreb, Varaždin, Croatia Email: [email protected] Abstract: Component-based software engineering and generative programming are common approaches in software engineering. Each approach has some benefits and domain of usage. Component-based development is used to build autonomous components that can be furth...

متن کامل

Generative Programming and Active Libraries

We describe generative programming, an approach to generating customized programming components or systems, and active libraries, which are based on this approach. In contrast to conventional libraries, active libraries may contain metaprograms that implement domain-specific code generation, optimizations, debugging, profiling and testing. Several working examples (Blitz++, GMCL, Xroma) are pre...

متن کامل

A Generative Programming Approach to Middleware development

The OMG’s Model Driven Architecture [1] is emerging as a way to enable seamless interaction between applications developed using various middleware platforms like CORBA [2], Java/EJB [3], .NET [4] and XML/SOAP [5]. Component based development technologies like the CORBA Component Model [6] and Enterprise Java Beans aim to provide meta-level frameworks for simplifying development on any particul...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1999